## This version takes commit done on 10.09.2016.

geometryname=Krone_geometry
geometrysif=Krone_geometry.sif
basename=Krone_stead
siffile=Krone_stead.sif # basic sif-file
transname=Krone_trans
transsif=Krone_trans.sif
bedname=Krone_bed
bedsif=Krone_bed.sif

echo "loading modules on Taito"
module purge
module load intel/13.1.0
module load intelmpi/4.1.0
module load mkl/11.0.2
module load hypre/2.9.0b
module load mumps/4.10.0
module load trilinos/11.0.3
module load elmer/latest
echo "loading module done.."


source ${INPUT_1}

OUTPUTSHARED=$shareddir


echo "SHARED OUTPUTDIR VAR :::: $OUTPUTSHARED"

mkdir -p $OUTPUTSHARED/ElmerResults




#ELMERBIN=/usr/local/Elmer_devel_07-19-16/bin/ElmerSolver_mpi
ELMERBIN=ElmerSolver_mpi
#export LD_LIBRARY_PATH="/usr/local/Elmer_devel_07-19-16/lib/elmersolver"
#export LD_LIBRARY_PATH="/appl/math/elmer/intel-16.0.0/intelmpi-5.1.1/latest/lib/elmersolver"

JOBWD=`pwd`
outputfolder=$JOBWD
inputfolder=$JOBWD/input



echo "ElmerIteration_$COUNTER : $JOBWD" >> $OUTPUTSHARED/worklfow-jobs.txt

echo "########  Dealing with individual iteration ###############"


[[ -e $JOBWD/input ]] || ln -sv $STORAGESHARED/input $JOBWD/input
#[[ -e $JOBWD/surf ]] || ln -sv $OUTPUTSHARED/surf $JOBWD/surf
[[ -e $JOBWD/n_list.txt ]] || ln -sv $STORAGESHARED/n_list.txt $JOBWD/n_list.txt


cat input/temperature.csv > temp


first=`awk 'NR==1 {print $1}' n_list.txt`

NR=`sed -n -e "$((COUNTER+1))p" n_list.txt`

nb=`awk '{print $1}' <<< $NR`

echo CURRENT-ITERATIVE-VALUE $nb


#mkdir -p $outputfolder/surf/$first
# Copy first surface and contour into $outputfolder
#cp -f $inputfolder/dem_surf_bed/surf${first}_elmer.xyz $outputfolder/surf/$first/surf.xyz






## you need to copy, otherwise python execution will 
## take the shared directory as ref.
cp -rv $STORAGESHARED/input/ClassProperties-Template.py $JOBWD/input/Python_particle/ClassProperties.py
echo "modifying ClassProperties.py self.path_folder.."
sed -i -e 's|@@CWD@@|'${JOBWD}'|g' $JOBWD/input/Python_particle/ClassProperties.py




# Create ElmerResults for nb
mkdir -p $JOBWD/ElmerResults/Date$nb

# Some constants
lapse_rate=`awk '$1=='$nb' {print $2}' $inputfolder/temperature.csv`
temp_sea=`awk '$1=='$nb' {print $3}' $inputfolder/temperature.csv`
ndays=`awk '$1=='$nb' {print $2}' $JOBWD/n_list.txt`
nlambda=`awk '$1=='$nb' {print $2}' $inputfolder/dateLambda.txt`

mkdir -p $JOBWD/ElmerResults/Date$nb/Kronebreen_outline

# create geometrySIF
	echo "\$n = \"${nb}\" "  > ${geometryname}${nb}.sif
	echo "\$inputfolder = \"${inputfolder}\" "  >> ${geometryname}${nb}.sif
	echo "\$outputfolder = \"${outputfolder}\" "  >> ${geometryname}${nb}.sif
	echo "\$outputfile = \"${geometryname}_${nb}\""    >> ${geometryname}${nb}.sif
	echo "\$lapse_temp = \"${lapse_rate}\"">> ${geometryname}${nb}.sif
	echo "\$temp_sea = \"${temp_sea}\"" >> ${geometryname}${nb}.sif
        echo "\$m = \"3\" " >> ${geometryname}${nb}.sif
	
	mv  ${geometryname}${nb}.sif $JOBWD/ElmerResults/Date$nb


# create SIF to input the velo
	echo "\$n = \"${nb}\" "  > ${basename}${nb}.sif
	echo "\$inputfolder = \"${inputfolder}\" "  >> ${basename}${nb}.sif
	echo "\$resultfile = \"${basename}_${nb}\" "  >> ${basename}${nb}.sif
	echo "\$restartfile = \"${geometryname}_${nb}\""   >> ${basename}${nb}.sif 
	echo "\$outputfile = \"${basename}_${nb}\""    >> ${basename}${nb}.sif
	echo "\$lapse_temp = \"${lapse_rate}\"">> ${basename}${nb}.sif
	echo "\$temp_sea = \"${temp_sea}\"" >> ${basename}${nb}.sif
        echo "\$m = \"3\" " >> ${basename}${nb}.sif

	mv  ${basename}${nb}.sif $JOBWD/ElmerResults/Date$nb

# create transient smb
	echo "\$n = \"${nb}\" "  > ${transname}${nb}.sif
	echo "\$resultfile = \"${transname}_${nb}\" "  >> ${transname}${nb}.sif
	echo "\$inputfolder = \"${inputfolder}\" "  >> ${transname}${nb}.sif
	echo "\$restartfile = \"${basename}_${nb}\""   >> ${transname}${nb}.sif 
	echo "\$outputfile = \"${transname}_${nb}\""    >> ${transname}${nb}.sif
	echo "\$lapse_temp = \"${lapse_rate}\"">> ${transname}${nb}.sif
	echo "\$temp_sea = \"${temp_sea}\"" >> ${transname}${nb}.sif
        echo "\$ndays = \"${ndays}\""  >> ${transname}${nb}.sif
        echo "\$m = \"3\" " >> ${transname}${nb}.sif

	mv  ${transname}${nb}.sif $JOBWD/ElmerResults/Date$nb
	
# Create sif files
	cat $inputfolder/sif/${geometrysif} >> $JOBWD/ElmerResults/Date$nb/${geometryname}${nb}.sif 
	cat $inputfolder/sif/${siffile} >> $JOBWD/ElmerResults/Date$nb/${basename}${nb}.sif
	cat $inputfolder/sif/${transsif} >> $JOBWD/ElmerResults/Date$nb/${transname}${nb}.sif


########## Getting Previous Element ###########
firstIteration=true
nrbefore=0
nb_before=0

currentctr=$((COUNTER+1))

echo "COUNTER VARIABLE ::: $COUNTER"
echo "current counter ::: $currentctr"

mkdir -p $outputfolder/velocities/$nb
mkdir -p ElmerResults/Date$nb

if [ $currentctr -gt 1 ]; then
  echo "current ctr greater than one"
  nrbefore=`sed -n -e "$((COUNTER))p" $JOBWD/input/n_list.bak`
  nb_before=`awk '{print $1}' <<< $nrbefore`
  firstIteration=false
  echo "previous iteration element ::::  $nb_before"
fi


#if  $firstIteration 
if [ $nb -eq 0 ]
then
    mkdir -p $JOBWD/surf/0
    [[ -e $JOBWD/surf/0/surf.xyz ]] || ln -sv $STORAGESHARED/input/dem_surf_bed/surf0_elmer.xyz $JOBWD/surf/0/surf.xyz
    nb_before=$nb
    mkdir -p $OUTPUTSHARED/velocities/

else
    echo "copying Date'$nb_before' and velocitities to the local job working directory ..." # this is for param_$nb_before.sh script
    [[ -e $JOBWD/ElmerResults/Date$nb_before ]] || ln -sv $OUTPUTSHARED/ElmerResults/Date$nb_before $JOBWD/ElmerResults/Date$nb_before
    [[ -e $JOBWD/velocities/$nb_before ]] || ln -sv $OUTPUTSHARED/velocities/$nb_before $JOBWD/velocities/$nb_before
    [[ -e $JOBWD/surf ]] || ln -sv $OUTPUTSHARED/surf $JOBWD/surf

fi

cd $outputfolder/ElmerResults/Date$nb


# Extract velocities (or any other parameter needed) from former run (can also be done in the python script) if needed...
# !!!! Check that the  column values are still working) !!!!
	echo '#!/bin/bash

echo "NB_BEFORE IS :'$nb_before'" 




for file in $(find  '$OUTPUTSHARED'/ElmerResults/Date'$nb_before'/ -name "output_krone_trans_'$nb_before'i*.dat" ! -name "*names"); do cat "$file"; done | awk '\'' $3==4 {{printf("%f",$50)};{printf(" ")};{printf("%f",$51)};{printf(" ")};{printf("%f",$16)};{printf("\n")}}'\'' > '$outputfolder'/velocities/'$nb'/velobed.x

for file in $(find  '$OUTPUTSHARED'/ElmerResults/Date'$nb_before'/ -name "output_krone_trans_'$nb_before'i*.dat" ! -name "*names"); do cat "$file"; done | awk '\'' $3==4 {{printf("%f",$50)};{printf(" ")};{printf("%f",$51)};{printf(" ")};{printf("%f",$17)};{printf("\n")}}'\'' > '$outputfolder'/velocities/'$nb'/velobed.y

for file in $(find '$OUTPUTSHARED'/ElmerResults/Date'$nb_before'/ -name "output_krone_trans_'$nb_before'i*.dat" ! -name "*names"); do cat "$file"; done | awk '\'' $3==4 {{printf("%f",$50)};{printf(" ")};{printf("%f",$51)};{printf(" ")};{printf("%f",$18)};{printf("\n")}}'\'' > '$outputfolder'/velocities/'$nb'/velobed.z

for file in $(find '$OUTPUTSHARED'/ElmerResults/Date'$nb_before'/ -name "output_krone_trans_'$nb_before'i*.dat" ! -name "*names"); do cat "$file"; done | awk '\'' $3==5 {{printf("%f",$50)};{printf(" ")};{printf("%f",$51)};{printf(" ")};{printf("%f",$16)};{printf("\n")}}'\'' > '$outputfolder'/velocities/'$nb'/velosurf.x

for file in $(find '$OUTPUTSHARED'/ElmerResults/Date'$nb_before'/ -name "output_krone_trans_'$nb_before'i*.dat" ! -name "*names"); do cat "$file"; done | awk '\'' $3==5 {{printf("%f",$50)};{printf(" ")};{printf("%f",$51)};{printf(" ")};{printf("%f",$17)};{printf("\n")}}'\'' > '$outputfolder'/velocities/'$nb'/velosurf.y

for file in $(find '$OUTPUTSHARED'/ElmerResults/Date'$nb_before'/ -name "output_krone_trans_'$nb_before'i*.dat" ! -name "*names"); do cat "$file"; done | awk '\'' $3==5 {{printf("%f",$50)};{printf(" ")};{printf("%f",$51)};{printf(" ")};{printf("%f",$18)};{printf("\n")}}'\'' > '$outputfolder'/velocities/'$nb'/velosurf.z' > param_${nb_before}.sh



if [ -e param_'${nb_before}'.sh ]
then
  echo "NB_BEFORE exists -- SBZ COMMENT"
fi

mkdir -p $JOBWD/ParticleResults/Date$nb


noproc=16

export OMP_NUM_THREADS=2

    if [ $currentctr -gt 1 ]; then         
        chmod +x param_${nb_before}.sh; ./param_${nb_before}.sh
    fi 
 
     cp -rf $OUTPUTSHARED/Mesh/mesh$nb/Kronebreen_outline$nb/* $JOBWD/ElmerResults/Date$nb/Kronebreen_outline/    
    

    rm -rf ELMERSOLVER_STARTINFO
    echo $geometryname$nb.sif > ELMERSOLVER_STARTINFO
    #mpirun -np $noproc $ELMERBIN
    srun $ELMERBIN 
    until [ -f "./Kronebreen_outline/result_${geometryname,,}_${nb}.result.$((noproc-1))" ]
    do
	echo "checking file existence"
	echo "./Kronebreen_outline/result_${geometryname,,}_${nb}.result.$((noproc-1))"
	sleep 60 
    done   

    echo $basename$nb.sif > ELMERSOLVER_STARTINFO
    #mpirun -np $noproc $ELMERBIN
    srun $ELMERBIN
    until [ -f "./Kronebreen_outline/result_${basename,,}_${nb}.result.$((noproc-1))" ]
    do
	echo "checking file existence"
	echo "./Kronebreen_outline/result_${basename,,}_${nb}.result.$((noproc-1))"

	sleep 60
    done

    echo $transname${nb}.sif > ELMERSOLVER_STARTINFO
    #srun -np $noproc $ELMERBIN
    srun $ELMERBIN
    # not to run Python task here 
    #echo "Invoking Python to Elmer"     
    #python $JOBWD/input/Python_particle/ElmerToParticle.py $nb $JOBWD    
    
    

    echo "saving current iteration's Date folder"
    cp -rv $JOBWD/ElmerResults/Date$nb $OUTPUTSHARED/ElmerResults/Date$nb

#  if  $firstIteration; then
        # not work if first iteration is not finished
 #       chmod +x param_${nb_before}.sh; ./param_${nb_before}.sh
 # fi

    echo "copying current iteration's velocities folder"
    cp -rv $JOBWD/velocities/$nb $OUTPUTSHARED/velocities/$nb

    cp -v $JOBWD/$STANDARD_OUT $OUTPUTSHARED/ElmerResults/elmerstdout_$nb
    cp -v $JOBWD/$STANDARD_ERROR $OUTPUTSHARED/ElmerResults/elmerstderr_$nb

    #TODO: mv afterwards
    #cp -rv $JOBWD/Particle_in $OUTPUTSHARED/

